package com.cl.pattern.singleton.lazy;

/**
 * '懒汉式' 单例
 * 类加载的时候创建实例，等到用的时候才去创建
 * 绝对的线程安全，在线程还没创建之前就已经实例化了，不可能存在访问安全问题
 *
 * 缺点：
 * 效率不高，每次调用getInstance()方法都加锁
 * @Author Small
 * @Date 2020/5/30 10:52
 * @Version 1.0
 **/
public class LazyTwo {


    /**
     * 静态的本类实例
     */
    private static LazyTwo lazy = null;


    /**
     * 私有的构造方法
     */
    private LazyTwo() {
    }


    /**
     * 公共的静态获取实例的方法
     * 效率不高！因为每次调用都会加锁！
     * @return
     */
    public static synchronized LazyTwo getInstance() {

        /*
         * 调用方法前先判断是否已经初始化了实例
         * 如果没有初始化，new 一个对象进行初始化
         *
        */
        if(lazy == null){
            lazy = new LazyTwo();
        }
        return lazy;
    }
}
